package com.cj.config;

import com.cj.Book;
import com.cj.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import java.util.Arrays;

/**
 * @author cc
 * @date 2025-05-12 08:16
 **/
//@Configuration // 添加了这个注解，，如果调用了标记了 @Bean注解的方法，这个方法不会被立马调用，
// 而是先去spring容器中检查这个bean是否存在，如果存在，则直接返回，目标方法就不调用了，如果不存在，则调用这个方法，并向spring容器注册bean
    @ComponentScan(basePackages = "com.cj")
public class JavaConfig {


    /**
     * 类似于bean标签注入bean，，， 默认情况下 bean的名字就是方法名
     * @return
     */
    @Bean(value = "user",initMethod = "init", destroyMethod = "destroy")
    User user(Book book){
        User user = new User();
        user.setUsername("hehe");
        user.setPassword("123");
        user.setBook(book);
        return user;
    }



    // autowireCandidate: 表示是否作为候选的bean，，，默认是true，，这个属性为false，表示这个bean不作为候选bean
    @Bean(value = "user2",autowireCandidate = false)
//    @Primary
    User user2(){
        return new User("user2","123");
    }


    @Bean
    Book book(){
        Book book = new Book();
        book.setAuthors(new String[]{"张三","李四"});
        return book;
    }
}
